package com.company.greedy;

/**
 * @author jrue
 * @description https://leetcode-cn.com/problems/fruit-into-baskets/
 * @date 2019/11/15 9:55
 * 在一排树中，第 i 棵树产生 tree[i] 型的水果。
 * 你可以从你选择的任何树开始，然后重复执行以下步骤：
 *
 * 把这棵树上的水果放进你的篮子里。如果你做不到，就停下来。
 * 移动到当前树右侧的下一棵树。如果右边没有树，就停下来。
 * 请注意，在选择一颗树后，你没有任何选择：你必须执行步骤 1，然后执行步骤 2，然后返回步骤 1，然后执行步骤 2，依此类推，直至停止。
 *
 * 你有两个篮子，每个篮子可以携带任何数量的水果，但你希望每个篮子只携带一种类型的水果。
 * 用这个程序你能收集的水果总量是多少？
 */
public class TotalFruit {

    public static void main(String[] args) {
        System.out.println(totalFruit(new int[]{1,2,3,2,2}));
    }

    public static int totalFruit(int[] tree) {
        int max  = 0;
        for (int i = 0; i < tree.length; i++) {
            int res = 0;
            int tag01 = -1;
            int tag02 = -1;
            for (int j = i;j < tree.length; j++) {
                if (tree[j] == tag01 || tree[j] == tag02) res++;
                else if (tag01 == -1) {
                    tag01 = tree[j];
                    res++;
                } else if (tag02 == -1) {
                    tag02 = tree[j];
                    res++;
                }else {
                    break;
                };
            }
            if (max < res) max = res;
        }

        return max;
    }

}
